1
Переход в производство: мышление о развертывании
EvoClass-AI002Лекция 10
00:00

Переход в производство: мышление о развертывании

Этот заключительный модуль соединяет разрыв между успешными исследованиями — где мы достигли высокой точности в ноутбуке — и надежной реализацией. Развертывание — это критический процесс преобразования модели PyTorch в минимальную, самодостаточную службу способную эффективно предоставлять прогнозы конечным пользователям с низкой задержкой и высокой доступностью.

1. Смена мышления при производстве

Экспериментальная среда Jupyter-ноутбука является состоятельной и хрупкой для использования в производственной среде. Нам необходимо переписать наш код из экспериментального скрипта в структурированные, модульные компоненты, подходящие для одновременных запросов, оптимизации ресурсов и бесшовной интеграции в более крупные системы.

Низкая задержка вывода: Достижение времени предсказания, постоянно ниже целевых порогов (например, $50\text{мс}$), что критически важно для приложений в реальном времени.
Высокая доступность: Проектирование службы так, чтобы она была надежной, несостоятельной и способной быстро восстанавливаться после сбоя.
Воспроизводимость: Обеспечение того, чтобы развернутая модель и среда (зависимости, веса, конфигурация) точно соответствовали подтвержденным результатам исследований.
Фокус: сервис модели
Вместо развертывания всего скрипта обучения мы развертываем минимальную, самодостаточную обертку службы. Эта служба должна выполнять только три задачи: загрузить оптимизированный артефакт модели, применить предварительную обработку входных данных и выполнить прямой проход для возврата прогноза.
inference_service.py
ТЕРМИНАЛbash — uvicorn-service
> Готово. Нажмите «Имитировать поток развертывания», чтобы запустить.
>
ИНСПЕКТОР АРТЕФАКТОВ В режиме реального времени

Имитируйте поток, чтобы просмотреть загруженные производственные артефакты.
Вопрос 1
Какая особенность Jupyter-ноутбука делает его непригодным для развертывания в производственной среде?
Он в основном использует код на языке Python
Он по своей сути состоятелен и потребляет много ресурсов
Он не может напрямую обращаться к видеокарте
Вопрос 2
Какова основная цель преобразования модели PyTorch в TorchScript или ONNX перед развертыванием?
Оптимизация для более быстрого выполнения на языке C++ и уменьшения зависимости от Python
Чтобы предотвратить кражу модели или обратное инжиниринг
Чтобы автоматически обрабатывать предварительную обработку входных данных
Вопрос 3
При проектировании производственного API когда следует загружать веса модели?
Один раз, при инициализации службы
В начале каждого запроса на прогнозирование
Когда поступает первый запрос к службе
Вызов: Определение минимальной службы
Спроектируйте структурные требования для службы с низкой задержкой.
Вам нужно развернуть сложную модель классификации изображений ($1\text{ГБ}$), которая требует специализированной предварительной обработки изображений. Она должна обрабатывать $50$ запросов в секунду.
Шаг 1
Чтобы обеспечить высокую пропускную способность и низкую среднюю задержку, какое одно наиболее критическое структурное изменение необходимо для скрипта на языке Python?
Решение:
Перепишите код в изолированные модули (предварительная обработка, определение модели, исполнитель вывода) и убедитесь, что весь процесс упакован для контейнеризации.
Шаг 2
Какой минимально необходимый «артефакт» нужно отправить, помимо обученных весов?
Решение:
Точный код/определение класса, используемое для предварительной обработки, и определение архитектуры модели, сериализованные и связанные с весами.